package com.inforich.projectManage.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.inforich.common.mybatis.Location;
import com.inforich.common.mybatis.LocationHandler;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

import com.inforich.common.core.domain.BaseParamEntity;
import com.inforich.common.annotation.Excel;
import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.inforich.common.core.domain.BaseEntity;
import org.springframework.transaction.annotation.Transactional;

/**
 * 新扩改登记对象 br_project_rubbish_expand
 *
 * @author hjm
 * @date 2022-10-30
 */
@Data
@EqualsAndHashCode()
@Accessors(chain = true)
@TableName("br_project_rubbish_expand")
public class ProjectRubbishExpand extends BaseParamEntity {

  private static final long serialVersionUID = 1L;

  /**
   * 主键
   */
  @TableId(type = IdType.ASSIGN_UUID)
  private String id;

  /**
   * 项目ID
   */
  private String projectId;
  @Excel(name = "项目名称")
  @TableField(exist = false)
  private String projectName;
  @Excel(name = "项目性质", dictType = "project_kind_id")
  @TableField(exist = false)
  private Long projectKindId;
  @Excel(name = "项目地址")
  @TableField(exist = false)
  private String projectAddress;
  @TableField(exist = false, typeHandler = LocationHandler.class)
  private Location projectLocation;

  /**
   * 建设周期
   */
  @Excel(name = "建设周期")
  private String buildingPeriod;

  /**
   * 建筑物类型
   */
  private Integer buildingType;
  @Excel(name = "建筑物类型")
  @TableField(exist = false)
  private String buildingTypeName;

  /**
   * 建筑内容
   */
  @Excel(name = "建筑内容")
  private String buildingContent;

  /**
   * 结构类型
   */
  @Excel(name = "结构类型", dictType = "structure_type_id")
  private Integer structureType;

  /**
   * 建设单位
   */
  @Excel(name = "建设单位")
  private String buildingDept;

  /**
   * 建设单位联系人
   */
  @Excel(name = "建设单位联系人")
  private String buildingPerson;

  /**
   * 建设单位联系方式
   */
  @Excel(name = "建设单位联系方式")
  private String buildingPhone;

  /**
   * 资源化利用企业
   */
  private Long disposalLandId;
  @Excel(name = "资源化利用企业")
  @TableField(exist = false)
  private String disposalLandName;

  /**
   * 资源化利用企业联系人
   */
  @Excel(name = "资源化利用企业联系人")
  private String disposalLandPerson;

  /**
   * 资源化利用企业联系电话
   */
  @Excel(name = "资源化利用企业联系电话")
  private String disposalLandPhone;

  /**
   * 资源化企业意见
   */
//  @Excel(name = "资源化企业意见")
  private String disposalSuggestion;

  /**
   * 施工单位
   */
  @Excel(name = "施工单位")
  private String constructionDept;

  /**
   * 施工单位联系人
   */
  @Excel(name = "施工单位联系人")
  private String constructionPerson;

  /**
   * 施工单位联系电话
   */
  @Excel(name = "施工单位联系电话")
  private String constructionPhone;

  /**
   * 施工单位意见
   */
//  @Excel(name = "施工单位意见")
  private String constructionSuggestion;

  /**
   * 监理单位
   */
  @Excel(name = "监理单位")
  private String supervisorDept;

  /**
   * 监理单位联系人
   */
  @Excel(name = "监理单位联系人")
  private String supervisorPerson;

  /**
   * 监理单位联系电话
   */
  @Excel(name = "监理单位联系电话")
  private String supervisorPhone;

  /**
   * 监理单位意见
   */
//  @Excel(name = "监理单位意见")
  private String supervisorSuggestion;

  /**
   * 运输单位
   */
  private String transportCompanyId;
  @Excel(name = "运输单位")
  @TableField(exist = false)
  private String transportCompanyName;
  /**
   * 运输单位联系人
   */
  @Excel(name = "运输单位联系人")
  private String transportCompanyPerson;

  /**
   * 运输单位联系电话
   */
  @Excel(name = "运输单位联系电话")
  private String transportCompanyPhone;

  /**
   * 运输单位意见
   */
//  @Excel(name = "运输单位意见")
  private String transportCompanySuggestion;

  /**
   * 运输单位车辆信息
   */
  @Excel(name = "运输单位车辆信息")
  private String transportCompanyCarInfo;

  /**
   * 预计垃圾面积
   */
  @Excel(name = "预计垃圾面积(m²)")
  private BigDecimal rubbishPlanArea;

  /**
   * 预计垃圾重量
   */
  @Excel(name = "预计垃圾重量(吨)")
  private BigDecimal rubbishPlanWeight;

  /**
   * 预计清运时间
   */
  @Excel(name = "预计清运时间")
  @JsonFormat(pattern = "yyyy-MM-dd")
  private Date rubbishPlanTransportDate;

  /**
   * 可利用重量
   */
  @Excel(name = "可利用重量(吨)")
  private BigDecimal rubbishRecycleWeight;

  /**
   * 可利用比例
   */
  @Excel(name = "可利用比例(%)")
  private BigDecimal rubbishRecycleRatio;

  /**
   * 所有垃圾总量
   */
  @Excel(name = "所有垃圾总量(吨)")
  private BigDecimal rubbishTotalWeight;

  /**
   * 所有垃圾占比
   */
  @Excel(name = "所有垃圾占比(%)")
  private BigDecimal rubbishTotalRatio;

  /**
   * 基础阶段
   */
  @Excel(name = "基础阶段", dictType = "stage_fill")
  private String baseStage;

  /**
   * 主体阶段
   */
  @Excel(name = "主体阶段", dictType = "stage_fill")
  private String mainStage;

  /**
   * 装修阶段
   */
  @Excel(name = "装修阶段", dictType = "stage_fill")
  private String decorateStage;

  /**
   * 交付阶段
   */
  @Excel(name = "交付阶段", dictType = "stage_fill")
  private String submitStage;
  /**
   * 基础阶段开始时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  @Excel(name = "基础阶段开始时间", width = 30, dateFormat = "yyyy-MM-dd")
  private Date baseStageStartDate;

  /**
   * 基础阶段结束时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  @Excel(name = "基础阶段结束时间", width = 30, dateFormat = "yyyy-MM-dd")
  private Date baseStageEndDate;

  /**
   * 主体阶段开始时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  @Excel(name = "主体阶段开始时间", width = 30, dateFormat = "yyyy-MM-dd")
  private Date mainStageStartDate;

  /**
   * 主体阶段结束时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  @Excel(name = "主体阶段结束时间", width = 30, dateFormat = "yyyy-MM-dd")
  private Date mainStageEndDate;

  /**
   * 装修阶段开始时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  @Excel(name = "装修阶段开始时间", width = 30, dateFormat = "yyyy-MM-dd")
  private Date decorateStageStartDate;

  /**
   * 装修阶段结束时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  @Excel(name = "装修阶段结束时间", width = 30, dateFormat = "yyyy-MM-dd")
  private Date decorateStageEndDate;

  /**
   * 交付阶段开始时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  @Excel(name = "交付阶段开始时间", width = 30, dateFormat = "yyyy-MM-dd")
  private Date submitStageStartDate;

  /**
   * 交付阶段结束时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  @Excel(name = "交付阶段结束时间", width = 30, dateFormat = "yyyy-MM-dd")
  private Date submitStageEndDate;

  /**
   * 图片
   */
  private String projectImages;

  /**
   * 状态( 10:未申请;20:待审核;30:已通过;40:未通过 )
   */
  @Excel(name = "状态", dictType = "approval_status")
  private Integer approvalStatus;

  /**
   * 审批意见
   */
  @Excel(name = "审批意见")
  private String approvalDesc;

  /**
   * 审批时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  @Excel(name = "审批时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
  private Date approvalDate;

  /**
   * 创建时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
  private Date createdDate;

  /**
   * 修改时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
  private Date modifiedDate;

  @Excel(name = "结构层次")
  private String structureLevel;

  @Excel(name = "项目类型", dictType = "project_type")
  private String projectType;

  /**
   * 垃圾列表
   */
  @TableField(exist = false)
  private List<ProjectRubbishDetail> rubbishDetailList;
  @TableField(exist = false)
  private List<ProjectRubbishDetail> rubbishBaseList;
  @TableField(exist = false)
  private List<ProjectRubbishDetail> rubbishMainList;
  @TableField(exist = false)
  private List<ProjectRubbishDetail> rubbishDecorateList;
  @TableField(exist = false)
  private List<ProjectRubbishDetail> rubbishSubmitList;

}